自己写Android.mk来生成Jar包 您所在的位置:网站首页 jar package 自己写Android.mk来生成Jar包

自己写Android.mk来生成Jar包

2023-04-15 02:27| 来源: 网络整理| 查看: 265

创建Android.mk文件和Java类:

Parent.java

Child.java

我强调庆闭者一点:态磨 Java类的package name并不是必须与所在文件夹一致,习惯上写誉薯成一致。

Android.mk

javalib.jar即为编译后可用的jar包。

在Linux下,可以通过Makefile来对源码工程进行管理,Android.mk文件是Makefile的一小部分,它用来对Android程序进行编译。Android.mk文件中描述了哪些C文件将被编译且指明了如何编译。Android.mk文件用来告知NDK Build 系统关于Source的信息。

1、编译可执行程序

2、编野昌译动态库或静态库

3、预编译文件(APK或Java库)

以上三种是Android.mk的主要用法,我们写mk文件时也就是以上三种目的。

首先看一个最简单的Android.mk的例子:

讲解:

每个Android.mk文件必须以定义 LOCAL_PATH 为开始。它用于在开发tree中查找源文件。

宏 my-dir 由Build System提供。返回包含Android.mk的目录路径。

CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx.

例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理 LOCAL_PATH .

这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响。

LOCAL_MODULE 模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空格。

Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so.

但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。

LOCAL_SRC_FILES变量必须包含将要打包如模块的C/C++ 源码。

不必列出头文件,build System 会自动帮我们找出依赖文件。

缺省的C++源码的扩展名为.cpp. 也可以修改,通过LOCAL_CPP_EXTENSION。

BUILD_SHARED_LIBRARY:是Build System提供的一个变量,指向一个GNU Makefile Script。

它负责收集自从上次调用include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并决定编译为什么。

BUILD_STATIC_LIBRARY:编译为静态库。

BUILD_SHARED_LIBRARY :编译为动态库

BUILD_EXECUTABLE:编译为Native C可执行程序

BUILD_PACKAGE(既可以编apk,也可以编资竖洞源包文件,但是需要指定LOCAL_EXPORT_PACKAGE_RESOURCES:=true)

BUILD_JAVA_LIBRARY(Java共享库)

BUILD_STATIC_JAVA_LIBRARY(java静态库)

Android源码中有大量的mk文颂纤扒件,Android系统的编译就是靠着这些mk文件的,所以学好是非常有必要的哦!

在Ubutu上编译出来的.so文件,怎么添加到Android项目中去使用呢?目前:可以通过

Makefile方式和CMake方式桥物梁引入预编译静动态库(静态库.a 动态库.so)到项目中去使用。就目前而言CMake是Goole推荐使用方式,但是加入接手一个老的NDK项目是MakeFile方式,看不懂就GePi了,所以这里我们还是介绍一下MakeFile方式将静动态库加入到AS中,完成NDK项目的开发。废话不多说,直接撸步骤了:

1、在src/main目录下创建一个ndkBuild文件夹

2、在此文件中创建一个Android.mk文件

3、在此文件中创建一个test.c的源文件蚂者

4、将编译好的的.so库复制到src/main目录下

如图所示目录结构:

1、编辑Android.mk文件

2、编辑grade(app)文件

3、编辑test.c文件

4、使用编译好的.so库里面的函数

本结果运行在Android 5.1 系统上

再次运行在Android8.0系统上

看以清楚知道,其实我们的APK包里面就没有libMainTest.so库,所以APP在8.0上会出现奔溃的现象。so...

1、在src/main目录下创建一个cmake文件夹

include:里面包含需要一些头文件

cmakeTest.c:需要编译的源文件

2、在app目录下创建一个文件:CmakeLists.txt

3、编辑grade(app)

4、编辑cmakeTest.c文敏运件

4、引用编译好的libcmakeTest.so

Android 8.0.0系统:

Android 5.1.1系统:

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/tougao/8211182.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有